linux shell脚本面试常见8个问题

常见问题

  1. 解释下$*和$@ 有什么区别,分别使用在什么场景?
  2. 如何查找文件夹下所有包含某个字符串的文件?
  3. shell 中$! 有什么作用?
  4. var=value和export赋值变量有什么区别?
  5. 如何调试shell脚本?
  6. 如何获取当前脚本的绝对路径?

背景
运维过程经常会使用shell获取数据或者做些自动化任务,当然也是面试运维工程师常常被问到的问题,为了方便记忆,我也整理了部份shell常问的知识点。

常见问题

1 解释下$*和$@ 有什么区别,分别使用在什么场景?

1.1 区别

  • $*和$@ 在不加双引号的时候作用类似,都可以通过循环遍历出每个参数。
  • $*和$@ 在加双引号的时候作用不一样,$*会将传递的参数看成一个整体,循环遍历的时候也是一个整体字符串;$@则会将传递参数通过空格分隔,可以通过循环遍历每个参数。

1.2应用场景

  • 当需要传递参数作为一个整体的时候可以使用"$*",如果需要分别获取每个参数的时候使用“$@”
$ cat > test.sh << EOF
#!/bin/bash
 
echo '没有引用双引号 $*'
for var in $*
do
echo "$var"
done

echo '没有引用双引号 $@'
for var in $@
do
echo "$var"
done

echo '--------------------------'

echo "引用了双引号 \"\$*\""
for var in "$*"
do
echo "$var"
done

echo "引用了双引号 \"\$@\""
for var in "$@"
do
echo "$var"
done
EOF

# 执行一下
$ bash test.sh 1 2 3
没有引用双引号 $*
1
2
3
没有引用双引号 $@
1
2
3
--------------------------
引用了双引号 "$*"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

企鹅侠客

您的打赏是我创作旅程中的关键燃

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

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

打赏作者

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

抵扣说明:

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

余额充值