shell使用心得

foo="cmd"
$cmd &> /dev/null
$($cmd &> /dev/null)
if [[ $($cmd &> /dev/null) -eq 0 ]]; then echo running; fi
if [[ $($cmd &> /dev/null) -ne 0 ]]; then echo "not found" && exit; fi
  1. 把命令cmd内容赋值到foo,此时不会执行该命令;
  2. 接着拼接加工该命令并执行,使得不打印info error信息。
  3. $(cmd)的方式是支持嵌套 http://ddrv.cn/a/665463 ,并且可以实现封装,否则在if下会认为拆分成不是一个命令
  4. 判断$($cmd &> /dev/null)执行结果是否等于0(执行成功);if [[]] 两层中括号建议使用,一层容易出问题。
  5. exit是退出脚本
[ num1 -eq num2 ]      num1 和 num2 两数相等为真 , =
[ num1 -ne num2 ]      num1 和 num2 两数不等为真 ,!=
[ num1 -gt num2 ]      num1 大于 num1 为真 , >
[ num1 -ge num2 ]      num1 大于等于num2 为真, >=
[ num1 -lt num2 ]      num1 小于n um2 为真 , <
[ num1 -le num2 ]      num1 小于等于 num2 为真, <=

整数值判断参考

foo=`$cmd`
if [[ $cmd =~ "c" ]]; then echo "has c"; fi
if [[ ${testmystring} != *"c0"* ]]; then echo "not has c0"; fi
  1. 执行cmd,并把输出保存的bar
  2. 判断cmd结果是否包含c字符
  3. 判断testmystring是否 “不”包含c0,建议包含也用这种格式,参考:https://stackoverflow.com/questions/30557508/bash-checking-if-string-does-not-contain-other-string
ret=`$cmd`
if [[ $? -ne 0 ]]; then echo "not success"; fi

执行cmd,保存输出到ret,再判断cmd是否执行成功

echo -ne "\t"
do something | tr -d "\n" >> file
  1. 打印tab并且不换行(粘贴到excel可以分列)
  2. 重定向不换行,参考:https://unix.stackexchange.com/questions/492071/how-can-i-remove-a-newline-from-redirected-output#:~:text=If you're asking more generally how to suppress,of using echo altogether in favor of printf%3A
str=""
str1="default"
str2=$([ -z "$str" ] && echo "$str1" || echo "$str")
echo $str2 # default

三元运算


posted @ 2022-12-30 16:41  小黑狐狸1001  阅读(23)  评论(0编辑  收藏  举报