我有这个简单的bash脚本:
#!/bin/sh
(echo "AUTH xxx xxx"
sleep 3
number=0161XXXXXXX
echo "ACTI $number"
sleep 3
echo "SET $number 1 S:$number@x.x.x.x"
sleep 3
echo "STAT $number"
sleep 3
echo "QUIT") | telnet xxx.xxx 777
我想在调用脚本时将数字作为参数传递,即
bash number.sh 0161XXXXXXX
我该怎么做?
由于
答案 0 :(得分:3)
使用positional parameters。您也可以直接使用$1
代替存储在变量中。
#!/bin/sh
arg=$1
(echo "AUTH xxx xxx"
sleep 3
number=$arg
echo "ACTI $number"
sleep 3
echo "SET $number 1 S:$number@x.x.x.x"
sleep 3
echo "STAT $number"
sleep 3
echo "QUIT") | telnet xxx.xxx 777
答案 1 :(得分:1)
来自bash手册页:
参数
如果参数处理后参数仍然存在,则-c和 提供了-s选项,假设第一个参数是 包含shell命令的文件的名称。如果调用bash 这种方式,$ 0设置为文件名和位置 参数设置为其余参数。 Bash读取并执行 来自此文件的命令,然后退出。 Bash的退出状态是退出 脚本中执行的最后一个命令的状态。如果没有命令 执行后,退出状态为0.首先尝试打开 文件在当前目录中,如果没有找到文件,那么 shell在PATH中搜索脚本中的目录。
所以第一个参数可以被称为$ 1,第二个参数可以被称为$ 2(直到$ 9,如果你需要以其他方式处理它,例如使用shift
...)