Linux shell 获取脚本文件后面的参数的方法

本文通过一个具体的错误示例分析了在Linux shell脚本中如何正确获取和使用参数。错误在于将参数$1用单引号括起以及在变量赋值时误加了空格。修正后,脚本能够正确读取并利用参数创建目录。总结强调了shell脚本中空格和制表符的重要性,以及与C语言的区别。
摘要由CSDN通过智能技术生成

环境

  • Linux 主机:Ubuntu 20.04.4 LTS

获取shell脚本参数

  • 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个空格代替
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangsz_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值