shell script 注意

本文深入探讨Shell脚本中的变量引用、子shell与命令组的区别、条件判断的增强功能及重定向技巧。解析$var与'$var'的差异,()与{}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 "$var" and '$var '

$ var=test
$ echo '$var'
  $var
$ echo "$var"
test

2 () and {} 

$ ls
extern  tps  win
$ echo $(ls)
extern tps win

[ $chanid -lt 10 ] || { echo "chanid should be less than 10"; exit 1; }

A,()只是对一串命令重新开一个子shell进行执行
B,{}对一串命令在当前shell执行
C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D,()最后一个命令可以不用分号
E,{}最后一个命令要用分号
F,{}的第一个命令和左括号之间必须要有一个空格
G,()里的各命令不必和括号有空格
H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令

3 [ ] 和 test 和  [[ ]] 

  test  等同于 [ ] 

  可用于判断某个条件是否为真。可用于 字符串,数值和文件的测试。

       test的三个基本作用是判断文件、判断字符串、判断整数。支持使用 ”与或非“ 将表达式连接起来。

       test中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq, -gt这种形式。

    [[ ]]   这是内置在shell中的一个命令,它就比刚才说的test强大的多了。支持字符串的模式匹配(使用=~操作符时甚至支持shell的正则表达 式)。逻辑组合可以不使用test的-a,-o而使用&& || 。(-a and -o or)、

4 shell 重定向

>/dev/null 2>&1 标准输出就会不再存在

ssh-copy-id -p 5122 root@$NE > /dev/null 2>&1

默认标准输出 1 输出到 /dev/null
错误输出 2 输出到 1 (被重定向到/dev/null) 

5.命令行的提示符 PS1

PS1='${PWD}'"($(basename WORK)) $ "

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值