oracle文件时,需要授权给相应文件,一边我们用chown -Roracle:oraclegroup xxx,不同服务器oraclegroup名字不相同,怎么样获取呢?
方法:首先,我们可以通过命令groups oracle 获取oraclegroups,格式如下:
oracle : oinstall dba
怎么样获取group 名字(oinstall)?
提供如下方法1:利用awk 获取第三个字符串
oraclegroup=`groups oracle|grep -v grep|awk‘{print $3}‘`
if [ "$oraclegroup" ="" ]; then
echo "There is no Oracle group"
exit 1
else
chown -R oracle:$oraclegroup $directory
fi
方法二:利用for循环,获取第三个元素
groups=`groups oracle`
oraclegroup=""
i=0
for element in $groups
do
let i++
if [[ i -eq 3 ]]; then
export oraclegroup=$element
echo$element
break
fi
done
if [ "$oraclegroup" ="" ]; then
echo "There is no Oracle group"
exit
else
chown oracle:$oraclegroup$targetfolder/Init_Upgrademanagement.sql
fi
Shell字符串截取——获取oracle group名字
标签:shell oracle
小编还为您整理了以下内容,可能对您也有帮助:
Linux的shell编程中,如何将一段字符串进行截取?
简单介绍下Shell字符串截取的详细方法,如截取指定字数、按指定的字符串截取、按指定要求分割。
一、Linuxshell截取字符变量的前8位,有方法如下:二、按指定的字符串截取1、第一种方法:${varible##*string}从左向右截取最后一个string后的字符串${varible#*string}从左向右截取第一个string后的字符串${varible%%string*}从右向左截取最后一个string后的字符串${varible%string*}从右向左截取第一个string后的字符串“*”只是一个通配符可以不要三、按照指定要求分割:比如获取后缀名如何用shell脚本语言去截取字符串
一. 概念
在shell中通过截取字符串操作可以提取到我们所需要的特定字符串
二. 操作符
① #表示 从左截取,删除左边字符,保留右边字符
其中 str是变量名,# 号是运算符,*//表示从左边开始删除第一个 //号及左边的所有字符
② %表示从右边开始截取,删除右边字符,保留左边字符
其中str是变量名,%号是运算符,/*表示从右边开始删除第一个/号及右边的所有字符
③ ##表示从左边开始截取,删除左边字符,保留右边字符
其中str是变量名,##号是运算符,*/表示从左边开始匹配最后一个(最右边一个)/,并且删除该/及前面的所有字符
④ %%表示从右边开始截取,删除右边字符,保留左边字符
其中str是变量名,%%号是运算符,/*表示从右边开始匹配最后一个(最左边一个)/,并且删除该/及右边的所有字符
⑤ 从左边第几个字符开始,及字符的个数
其中的 0 表示左边第一个字符开始,10表示字符的总个数。
三.采用cut工具截取
-c选项表示用字符定位: 3,7表示截取第三个字符和第七个字符,4-9表示截取第四个字符到第九个字符
如何用shell脚本语言去截取字符串
一. 概念
在shell中通过截取字符串操作可以提取到我们所需要的特定字符串
二. 操作符
① #表示 从左截取,删除左边字符,保留右边字符
其中 str是变量名,# 号是运算符,*//表示从左边开始删除第一个 //号及左边的所有字符
② %表示从右边开始截取,删除右边字符,保留左边字符
其中str是变量名,%号是运算符,/*表示从右边开始删除第一个/号及右边的所有字符
③ ##表示从左边开始截取,删除左边字符,保留右边字符
其中str是变量名,##号是运算符,*/表示从左边开始匹配最后一个(最右边一个)/,并且删除该/及前面的所有字符
④ %%表示从右边开始截取,删除右边字符,保留左边字符
其中str是变量名,%%号是运算符,/*表示从右边开始匹配最后一个(最左边一个)/,并且删除该/及右边的所有字符
⑤ 从左边第几个字符开始,及字符的个数
其中的 0 表示左边第一个字符开始,10表示字符的总个数。
三.采用cut工具截取
-c选项表示用字符定位: 3,7表示截取第三个字符和第七个字符,4-9表示截取第四个字符到第九个字符
SHELL脚本之字符串大截取取与切割
本问主要解决以下三个问题:
第一问、什么是字符串的截取与切割以及它的作用是什么?
第二问、字符串截取大方法有哪些?
第三问、字符串截取与切割大实际应用场景有哪些?
第一问:什么是字符串的截取与切割以及它的作用是什么?
字符串的截取与切割指的是:将一串数字、文字、字母以及各种标点和特殊的符号按你的需要进行过滤和筛选;
例如:请在李白的这首《行路难》中找出第15个字是什么?如果我们肉眼的话,就得挨个数了;
《行路难》
金樽清酒斗十千⑴,玉盘珍羞直万钱⑵。
停杯投箸不能食⑶,拔剑四顾心茫然。
欲渡黄河冰塞川,将登太行雪满山。
闲来垂钓碧溪上,忽复乘舟梦日边⑷。
行路难!行路难!多岐路,今安在⑸?
长风破浪会有时⑹,直挂云帆济沧海
这只是一首短诗,如果要在1万字中寻找一第67898个字,你肿么办?也一个一个的数吗?
这个时候,如果你知道字符串的截取与切割那就非常简单了,几秒钟就搞定了。
如何搞定从10万字中只取第67898个字?
请看,字符串截取大方法有哪些?
第二问、字符串截取大方法有哪些?
字符串截取的方法有三种,分别是:
1、${变量名:起始位置:长度};
2、expr substr "$变量名" 起始位置 长度 ;
3、echo $变量名 | cut -b 起始位置-结束位置
用这三种方法都可以实现快速的从10万个字中寻找到第67898个字;
假如这10万字在一个名叫luo.txt的文本文件中;
定义变量:look=$(cat /luo.txt)
第一种方法:echo ${look:67897:1}
译为:从变量 look 中截取第67898个字符,字符长度为1个;
注:采取${}这种方法截取字符,起始位置是从0开始算起,所以截取第67898个字符,我填写的是67897;
第二种方法:expr substr "$look" 67898 1
译为:采取 expr substr 字符串截取的方法,截取变量look中的第67898位置的字符,长度为1;
第三种方法:echo $look | cut -b 67898
译为:运用 echo $变量名 | cut -b 起始位置-结束位置的方法截取变量look中起始位置是67898,结束位置也是67898的字符;
第三问、字符串截取与切割大实际应用场景有哪些?
应用场景有以下但不限于:
场景1:为新建的用户设置随机密码;
场景2:信用卡用户,新卡下来的随机密码;
场景3:在茫茫字符串中寻找你想要的任意字符;
以场景1为例编写用户随机密码的脚本:
假如你是公司的运维工程师,现在你公司有100个新同事刚刚入职,需要你为他们创建新的账户和密码,请问你会怎么做?
具体做法如下:
第一步、问人事部拿到新同事入职名单user.txt;
第二步、编写一个创建用户和设置密码的脚本;
vim /xin.sh ##译为:运用vim文本编辑器创建一个名叫xin.sh的文本文件;
#!/bin/bahs ##译为:shell脚本固定格式;
pass="" ##译为:将pass这个变量定义为空值;
x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
##译为:讲x这个变量定义为abcdefghij......
for i in `cat /user.txt` ##译为:将 i 这个变量 cat /user.txt,然后循环执行下面的指令;
do
useradd $i ##译为:创建变量中 $i 的用户;
echo "用户 $i 创建成功" ##译为:运用 echo 输出创建 $i 的信息;
echo $i >> /luo1.txt ##译为:将 $i 的信息输出并追加重定向到 luo.txt 这个文本文件中;
for q in {1..6} ##译为:循环中嵌套的子循环,循环执行下面的命令6次;
do
n=$[RANDOM%62] ##译为:为变量名 n 赋值为1-62之间;
m=${x:n:1} ##译为:将变量名 m 赋值为 $(x:n:1);
pass=${pass}$m ##译为:将变量名 pass 赋值为 ${pass}$m
done ##译为:结束循环的固定格式;
echo $pass | password --stdin $i &> /dev/null ##译为:将 $i 的用户的密码设置为 $pass,并把结果输在屏幕上的结果,不管是正确还是错误,全部丢掉;
echo "用户 $i 的密码设置成功" ##译为:运用 echo 命令输出 $i 创建密码的信息;
echo $pass >> /luo1.txt ##译为:将 $pass 的信息输出并追加重定向到 luo.txt 这个>文本文件中;
pass="" ##译为:将变量pass重新定义为空值,便于上面命令重新赋值;
done ##译为:for循环固定的结束格式;
以上........
(本篇完)
祝:顺利!
罗贵
2019-0310于深圳
Shell字符串处理之${}
上一章节讲解了为什么用${}引用变量,${}还有一个重要的功能,就是文本处理,单行文本基本上可以满足你所有需求。
2.1 获取字符串长度
2.2 字符串切片
格式:
${parameter:offset}
${parameter:offset:length}
截取从offset个字符开始,向后length个字符。
2.3 替换字符串
格式:${parameter/pattern/string}
2.4 字符串截取
格式:
${parameter#word} # 删除匹配前缀
${parameter##word}
${parameter%word} # 删除匹配后缀
${parameter%%word}
# 去掉左边,最短匹配模式,##最长匹配模式。
% 去掉右边,最短匹配模式,%%最长匹配模式。
# 去掉左边,从左边匹配第一个,##从右边匹配第一个。
% 去掉右边,从右边匹配第一个,%%从左边匹配第一个。
有*号情况下才这样。
2.5 变量状态赋值
${VAR:-string} 如果VAR变量为空则返回string
${VAR:+string} 如果VAR变量不为空则返回string
${VAR:=string} 如果VAR变量为空则重新赋值VAR变量值为string
${VAR:?string} 如果VAR变量为空则将string输出到stderr
${}主要用途大概就这么多了,另外还可以获取数组元素,在后面章节会讲到。
示例: