加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Shell编程概括

发布时间:2021-11-24 14:03:56 所属栏目:教程 来源:互联网
导读:1,在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等,所有变量可以不加入:$符号前缀。双括号结构 扩展了for,while,if条件测试运算 例子#((RANDOM%num_s)) for((j=1;j=6;j++)) do echo -n ${seqrand[j]} done 2,将命令的值输出 `file ..`(倒引号

1,在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等,所有变量可以不加入:“$”符号前缀。双括号结构 扩展了for,while,if条件测试运算
 
例子#((RANDOM%num_s))
 
 
for((j=1;j<=6;j++))
do
    echo -n ${seqrand[j]}
done
 
 
2,将命令的值输出
 
`file ..`(倒引号)
 
$(file ..)
 
eval file ..
 
#ftype=eval file $1
#ftype=`file $1`
#ftype=$(file $1)
 
 
3,shift $1;;#shift 是去除$1,把$2变成$1
 
4,cat << CLOUD将到下一个CLOUD的所有中间内容输出到stdout
 
cat << CLOUD
</table>
</body>
</html>
CLOUD
 
5,sed和awk都可以实现替换
 
讲文本转换成html
 
sed -e 's/:/</td><td>/g' -e 's/^/<tr><td>/g' -e 's/$/</td></tr>/g' $1
awk 'BEGIN {FS=":";OFS="</td><td>"} gsub(/^/,"<tr><td>") gsub(/$/,"</td></tr>"){print $1,$2 }'
 
 
6, 测试:如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。命令test或[的参数形式是相同的,只不过test命令不需要]参数。左方括号[确实是一个命令的名字,传给命令的各参数之间应该用空格隔开,比如,$VAR、-gt、3、]是[命令的四个参数。
 
:是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真。
 
if以fi结尾
 
if [ -f /bin/bash ]
then echo "a file"
else echo "not a file"
fi
if :;then echo "always true"; fi
 
 
7,RANDOM在0--32767之间
 
8,echo什么都不加可以输出换行
 
9,#,@,*的含义:
 
•$# :代表后接的参数个数 ;num_s=${#s[@]},num_s为数组s的参数个数;echo ${#arr[3]} // 获取字arr[3]的长度
•$@ :代表 "$1" "$2" "$3" "$4" 之意,每個變數是獨立的(用雙引號括起 來);•$* :代表『 "$1c$2c$3c$4" 』,其中 c 為分隔字元,預設為空白鍵, 所以 本例中代表 "$1 $2 $3 $4" 之意。
 
 ./123.sh one two three four
 
 
 
echo $0----./123.sh
echo $1----one
echo $2----two
echo $3----three
echo $#----4
echo $@----one two three four
echo $*----one two three four
 
 
10,数组
 
seq=(0 1 2 3 4 )
 
 
seq【0】为1
 
seq[1]=6赋值
 
echo ${seq[@]}0 6 2 3 4
 
echo ${seq[1]} 输出6
 
 
for j in ${seqrand[@]}
do
    echo -n $j
done
 
 
输出0624
 
echo -n 去掉换行

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!