在文件名中调用Shell变量时为空,但在echo或在其他地方调用时则不是

1 linux variables bash shell

我有4个shell变量集

remote_account="raccname"
remote_machine="server"
First_Name="firstname"
Last_Name="lastname"
Run Code Online (Sandbox Code Playgroud)

当我打电话remote_accountremote_machine在我的剧本中,他们得到了很好的使用

echo "What directory shall you choose?"
  read dir
  scp -r ~/csc60/$dir $remote_account@$remote_machine:directoryA
  exit;;
Run Code Online (Sandbox Code Playgroud)

但是当我打电话给其他两个人的时候

echo "What directory shall you choose?"
  read dir
  scp $remote_account@$remote_machine:tars/$Last_Name_$First_Name_$dir.tar.z ~/tars
  exit;;
Run Code Online (Sandbox Code Playgroud)

当我扔进去时,它会抓取tars文件tars/$dir.tar.z完全跳过它仍显示为"lastname"$Last_Name_$First_Name_echo $Last_Name

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

Ign*_*ams 5

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

scp "$remote_account@$remote_machine:tars/${Last_Name}_${First_Name}_$dir.tar.z" ~/tars
Run Code Online (Sandbox Code Playgroud)