【发布时间】:2021-08-24 23:25:56
【问题描述】:
我早上大部分时间都在这,但必须工作,所以我回来了,希望有人能帮我解决这个问题。
这条线有效
dest="$user@$dest:$( hostname )"
# dest=me@remotehost.com:MyMachineHostname
这就像我真的很挣扎,我希望能够通过上传文件并设置一个 cron 作业在多个主机上运行它。
dir=$(( $unique == 1 ? ":"$( hostname ) : "" ))
dest="$user@$dest$dir"
当 unique == 1 时,冒号和主机名可以设置为 $dir,否则应该为空。
这绝对不是 PHP,要困难得多。
我尝试了许多不同的方括号,没有任何没有 $ 的大括号,我得到的最接近的是 :myhostname 但周围有很多其他字符。
这很令人沮丧。
【问题讨论】:
-
三元运算符仅适用于算术上下文。它们包含的所有内容都必须是整数数学。您不能使用它们来替换字符串。
-
dir=$( (( unique )) && hostname )将是一种实现您所要求的方法,尽管从性能角度来看它有点棘手(但是,hostname命令也是如此) -
...更好的实践方法就是
if (( unique )); then dir=$HOSTNAME; fi。不需要三元组,使用内置变量$HOSTNAME比$(hostname)快远(命令替换普遍很慢;启动外部命令也是如此)。 -
顺便说一句,标题中的“日期”是什么?问题正文根本没有说明日期。
-
感谢您的回复,对令人困惑的日期部分感到抱歉,除了运行日期函数外,它与主机名基本相同,我在写作时意识到如果一个正在工作我可以做另一个相同的名字,主机名更短,没有格式等,所以我选择询问那个。很高兴我做到了,我有一些好的答案要去做,同时在 cmets 中有一些代码改进。我会更新标题,现在。很抱歉造成混乱。
标签: bash ubuntu-20.04