1

所以我昨天刚开始学习 UNIX,我正在尝试创建一个基本脚本来询问您的联系方式(姓名、地址、电话号码),然后将其存储到一个名为 details.out 的文件中。

这让我发疯了!这是一件如此简单/基本的事情,但我做不到,而且我已经坚持了整整一个小时......

经过大量的谷歌搜索和搜索,我仍然找不到答案。所以这就是我到目前为止所做的,并且想知道我哪里出错了!

echo Please type your first and last name
read $firstname $lastname
echo Please type in your address
read $address
echo Please type in your phone number
read $phone
echo Thank you very much!
echo The details have been stored in '"details.out"'
cat >> details.out <<EOF
Name: echo $firstname echo $lastname
Address: echo $address
Phone Number: echo $phone
EOF

当我阅读“details.out”时,它显示如下: 姓名:echo 地址:echo 电话号码:echo

任何帮助,将不胜感激!(如果你试着给我指出正确的方向,而不是直接给我答案,我将不胜感激!)

PS 如果有帮助,我正在使用 Putty!

4

2 回答 2

2
  • 当您使用read(或声明变量)时,不要将 $ sigil 放在变量名上
  • 当你显示一个变量时,总是在 : ex. 周围加上双引号。echo "$var"
  • 当您使用here-doc时,无需输入echo命令
  • 当您使用 echo 时,请使用引号:

“双引号”每个扩展,以及任何可能包含特殊字符的内容,例如。“$var”、“$@”、“${array[@]}”、“$(command)”。使用“单引号”来表达文字,例如。“成本 5 美元”。请参阅http://mywiki.wooledge.org/Quotes http://mywiki.wooledge.org/Argumentshttp://wiki.bash-hackers.org/syntax/words

于 2013-06-15T23:20:04.117 回答
2

每当您$在变量名之前放置 a 时,您都在检索该变量的当前值。你不想在你的read命令中这样做。脚本启动时变量为空,空值代替$firstnameand$lastnameread在没有参数的情况下调用,导致它读取一行并丢弃它。

使用赋值设置变量:

var=value

设置一个变量read

read var

他们都没有使用$var,因为他们不想查看当前值,他们想替换它。

在heredoc 中也不需要那些echos。它们不在命令位置,因此它们只会作为输入的一部分被复制到cat.

于 2013-06-15T23:25:03.143 回答