1

我设置了 4 个 shell 变量

remote_account="raccname"
remote_machine="server"
First_Name="firstname"
Last_Name="lastname"

当我打电话remote_accountremote_machine在我的脚本中,他们会很好地使用

echo "What directory shall you choose?"
  read dir
  scp -r ~/csc60/$dir $remote_account@$remote_machine:directoryA
  exit;;

但是当我这样称呼另外两个时

echo "What directory shall you choose?"
  read dir
  scp $remote_account@$remote_machine:tars/$Last_Name_$First_Name_$dir.tar.z ~/tars
  exit;;

当我扔进去时,它会tars/$dir.tar.z完全跳过tars 文件,它仍然显示为“姓氏”$Last_Name_$First_Name_echo $Last_Name

在变量或其他东西之间是否有使用“_”的规则,或者我只是遗漏了一些明显的东西?

4

2 回答 2

5

_是变量名称的有效字符,因此您必须限定哪个部分是变量。

scp "$remote_account@$remote_machine:tars/${Last_Name}_${First_Name}_$dir.tar.z" ~/tars
于 2013-09-29T06:53:04.180 回答
0

您需要使用 ${} 来分隔您的变量值,因为您声明 $Last_Name_$First_Name_$dir 被视为一个变量和 shell put 值。在您的情况下,您没有为它定义值。它将被解释为“”。

采用 ${LAST_NAME}_${FIRST_NAME}

于 2013-09-29T06:56:00.520 回答