获取存储在变量中的命令行参数
Getting command line argument that stores in a variable
我正在编写一个 bash 脚本来获取用户信息的前三行。
例如:
$ ./c.sh bob unknown
Login: bob Name: Bob
Directory: /u1/h7/bob Shell: /bin/tcsh
Office: AA 044, x8361 Home Phone: 000-000-0000
unknown: no such user.
到目前为止,这是我的代码
#!/bin/bash
if [ $# == 0 ]; then
echo "Usage: ./c.sh Login/Username"
exit
else
i=$#
j=1
while [ "$j" -le "$i" ]; do
finger ${$j} | head -n+3
echo
j=$(($j+1))
done
fi
${$j} 没有给出命令行参数的用户类型,而是给出了 $j 的值,关于如何获得 login/username 的任何建议和帮助?我试过 $($j), $((j)), ${$j}....
简单的答案:停止使用不必要的间接寻址:
#!/bin/bash
if (( $# == 0 )); then
echo "Usage: ./c.sh Login/Username"
exit
else
while [[ ]]; do
finger "" | head -n+3
echo
shift
done
fi
或者……
…
for user; do # equivalent to `for user in "$@"; do`
finger "$user" | head -n+3
…
done
你可以这样写:
i=$#
j=1
while [ $j -le $i ]; do
finger "${@:j++:1}" | head -n+3
echo
done
…但你不需要那么努力。
#!/bin/bash
if [[ $# -eq 0 ]]; then
echo "Usage: [=10=] Login/Username"
exit
else
for ARG in "$@"; do
finger "$ARG" | head -n 3
echo # If you want a newline
done
fi
越简单越好。
我正在编写一个 bash 脚本来获取用户信息的前三行。
例如:
$ ./c.sh bob unknown
Login: bob Name: Bob
Directory: /u1/h7/bob Shell: /bin/tcsh
Office: AA 044, x8361 Home Phone: 000-000-0000
unknown: no such user.
到目前为止,这是我的代码
#!/bin/bash
if [ $# == 0 ]; then
echo "Usage: ./c.sh Login/Username"
exit
else
i=$#
j=1
while [ "$j" -le "$i" ]; do
finger ${$j} | head -n+3
echo
j=$(($j+1))
done
fi
${$j} 没有给出命令行参数的用户类型,而是给出了 $j 的值,关于如何获得 login/username 的任何建议和帮助?我试过 $($j), $((j)), ${$j}....
简单的答案:停止使用不必要的间接寻址:
#!/bin/bash
if (( $# == 0 )); then
echo "Usage: ./c.sh Login/Username"
exit
else
while [[ ]]; do
finger "" | head -n+3
echo
shift
done
fi
或者……
…
for user; do # equivalent to `for user in "$@"; do`
finger "$user" | head -n+3
…
done
你可以这样写:
i=$#
j=1
while [ $j -le $i ]; do
finger "${@:j++:1}" | head -n+3
echo
done
…但你不需要那么努力。
#!/bin/bash
if [[ $# -eq 0 ]]; then
echo "Usage: [=10=] Login/Username"
exit
else
for ARG in "$@"; do
finger "$ARG" | head -n 3
echo # If you want a newline
done
fi
越简单越好。