Skip to content

bash文件参数和变量

文件参数

当文件执行时,必要情况下需要在文件后面增加执行参数, 比如查询时间,分页增加每页的数量等, 下面命令是sh脚本执行start.sh并传递arg1和arg2参数

bash
sh start.sh arg1 arg2

我们使用$1表示第一个位置参数, $@ 表示所有参数, $# 代表参数个数, 下面是在start.sh中的具体内容

bash
#!/bin/bash
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "所有参数:$@"
echo "参数个数:$#"

执行脚本将输出

bash
第一个参数:arg1
第二个参数:arg2
所有参数:arg1 arg2
参数个数:2

变量

  • 变量的赋值

变量赋值时字符串使用单引号(')或者双引号(")引用起来, 注意, 等号(=)左右不能有空格, 有空格会被当成命令来处理

bash
start_time='2024-09-09 00:00:00'
endTime='2024-09-09 00:00:00'
perpage=20
  • 变量的使用

打印开始时间

bash
echo $start_time
echo ${start_time}

这两种打印方式没什么不同,大括号防止混淆,如下

bash
hello="hello"
echo "${hello}world"

如果没有大括号,变量会变成$helloworld, 不存在. 变量需要放在双引号中,单引号没有处理变量的能力

bash
hello="hello"
echo '${hello}world'

输出 ${hello}world

bash调用脚本传参

bash脚本调用python和node脚本

js
// a.js
console.log(process.argv.slice(2));
python
# a.py
import sys
print(sys.argv)
bash
# start.sh
node a.js "$@"
python3 a.py "$@"
bash
$ bash start.sh 1 a b

# output
# [ '1', 'a', 'b' ]
# ['a.py', '1', 'a', 'b']