分享70个经典的 Shell 脚本面试题与答案

2019-09-23 08:59:14刘景俊
"abc" 开头 ?

[[ $string == abc* ]]

56) [[ $string == abc* ]][[ $string == "abc*" ]] 有什么区别

[[ $string == abc* ]] - 检查字符串是否以字母 abc 开头 [[ $string == "abc" ]] - 检查字符串是否完全等于 abc

57) 如何列出以 abxy 开头的用户名 ?

egrep "^ab|^xy" /etc/passwd|cut -d: -f1

58) bash 中 $! 表示什么意思 ?

后台最近执行命令的 PID.

59) $? 表示什么意思 ?

前台最近命令的结束状态。

60) 如何输出当前 shellPID ?

echo $$

61) 如何获取传递给脚本的参数数目 ?

echo $#

(LCTT 译注:和第3题重复了。)

*62) $*$@ 有什么区别*

$* - 以一个字符串形式输出所有传递到脚本的参数 $@ - 以 $IFS 为分隔符列出所有传递到脚本中的参数

63) 如何在 bash 中定义数组 ?

array=("Hi" "my" "name" "is")

64) 如何打印数组的第一个元素 ?

echo ${array[0]}

65) 如何打印数组的所有元素 ?

echo ${array[@]}

66) 如何输出所有数组索引 ?

echo ${!array[@]}

67) 如何移除数组中索引为 2 的元素 ?

unset array[2]

68) 如何在数组中添加 id 为 333 的元素 ?

array[333]="New_element"

69) shell 脚本如何获取输入的值 ?

a) 通过参数

./script param1 param2

b) 通过 read 命令

read -p "Destination backup Server : " desthost

70) 在脚本中如何使用 "expect" ?

/usr/bin/expect << EOD
spawn rsync -ar ${line} ${desthost}:${destpath}
expect "*?assword:*"
send "${password}r"
expect eof
EOD

祝你好运 !! 如果你有任何疑问或者问题需要解答都可以在下面的评论框中写下来。让我们知道这对你的面试有所帮助:-)

via:http://linoxide.com/linux-shell-script/shell-scripting-interview-questions-answers/
作者:Petras Liumparas 译者:ictlyh 校对:wxy
本文由LCTT原创翻译,Linux中国荣誉推出
来源:linux.cn/article-5607-1.html