- Linux 主机:Ubuntu 20.04.4 LTS
- Linux shell 可以通过 $0 $1 $2 等获取 shell 脚本本身 及后面的参数
- 错误示例:
#!/bin/bash echo "-- create Linux rootfs begin --" echo '$1' rootfs_path = $1 echo $rootfs_path #rm -rf rootfs_path mkdir $rootfs_path cd $rootfs_path
- 运行效果
# ./rootfs_create.sh aa -- create Linux rootfs begin -- $1 ./rootfs_create.sh: line 4: rootfs_path: command not found mkdir: missing operand Try 'mkdir --help' for more information.
- 问题分析与解决
- $1 就是shell 脚本后的第一个参数,不需要加上单引号,直接 echo $1 即可
- shell 的变量不需要声明直接使用,但是变量赋值,【中间不能有空格】,也就是rootfs_path = $1 之所以失败,是因为 = 号两边有【空格】,改为:rootfs_path=$1 即可
#!/bin/bash echo "-- create Linux rootfs begin --" echo $1 rootfs_path=$1 echo $rootfs_path #rm -rf rootfs_path mkdir $rootfs_path cd $rootfs_path
- 运行效果:符合预期
# ./rootfs_create.sh aa -- create Linux rootfs begin -- aa aa小结
- C语言的分号,shell的空格,都需要注意符号引起的问题
- C语言增加空格用于格式化美化代码,但是shell,多余的空格反而是个问题
- 在Linux shell 脚本中,尽量注意【空格】【制表符】
- 【制表符】不能随便使用4个空格代替



