shell - 变量

2020-05-06  本文已影响0人  qinwenguang

变量

1 . 自定义变量
(1) 数字

#!/bin/bash
#not i = 1
i=1
echo $i


i=$[ $i+1 ]
echo $i
  1. 字符串
    (1) 赋值
your_name="qinjx"


#推荐第二种写法,用来区分变量
echo "$your_name"
echo "${your_name}"

(2) 拼接

#!/bin/bash


name="wenguang"
age=24
fullname="qin"$name
echo "name=$name,fullname=$fullname,age=$age"
  1. 限定变量
    (1) readonly 变量名
#!/bin/bash
readonly file_name="/hom/wenguang"
file_name="home"
  1. 命令替换
    (1) 将命令的执行结果赋值给变量
val=`common`
val=$(common)

(2) ex

#!/bin/bash


today=$(date +%y%m%d)
ls ${HOME} > log.${today}
f1399b48-4a2a-4357-8d0d-39a34de2e9c1.png
  1. 变量的有效范围

交互变量

  1. 命令行参数
    (1) 格式
#!/bin/bash
#参数中包括空格处理
if [ $# -eq 1 ]; then
  echo "$0"
  echo "$1"
fi

(3) 使用

if [  -n "$1" ]; then
在case里面
一般使用不需要加上大括号

  1. 其他内置变量
#!/bin/bash
#统计参数的个数
echo "there are $# parameter"
4ed92ecb-918e-41b1-82f7-66a4073633bc.png

(3) #@: 遍历输入的所有参数

#!/bin/bash
#遍历输入的参数
number=0;
​

for param in $@
do
  number=$[ number+1 ]
  echo "$number  $param"  
done
d5b45c87-f0cd-48fd-b6de-6e2e6d1d03e7.png
  1. shift移动变量
    (1) 作用
  1. 处理单独选项
    (1) 直接使用case表示, 然后使用shift移动即可
#处理不同的参数


while [ -n "$1" ]
do
  case "$1" in
  "-a") echo "found -a option";;
  "-b") echo "founf -b option";;
  "-c") echo "founf -c option";;
  "-d") echo "founf -d option";;
  *)  echo "no found option";;
  esac
  shift
done

  1. getopt
    (1) 作用
#!/bin/bash
#处理不同的参数
#-a -b arg1 -c -d -- arg2 
set -- $(getopt -q ab:cd "$@")


while [ -n "$1" ]
do
  case "$1" in
  "-a") echo "found -a option";;
  #这里的值
  -b)   param=$2
        echo "founf -b option with parameter $param"
        shift ;;
  "-c") echo "founf -c option";;
  "-d") echo "founf -d option";;
  "--") shift
        break;;
  *)  echo "$1 no found option";;
  esac
  shift
done


count=1
for param in "$@"
do
  echo "Parameter #$count: $param"
  count=$[ $count + 1 ]
done

8689641e-61ea-4907-80bc-778e931801b4.png
  1. 参数标准化
5be672a4-ee3c-46e4-8f9f-7af9a6652c78.png
上一篇 下一篇

猜你喜欢

热点阅读