最新文件名将其保存为变量

最新文件名将其保存为变量

我尝试将最新的文件名保存到变量中,但每次都出现权限被拒绝的错误。有没有关于如何将其保存到变量的建议。

test = `$(ls -t /opt/inbound/Sample*.dat.gz  | head -1)`

错误:

-

bash: /opt/inbound/Sample_04142019_05_52_03.dat.gz: Permission denied

答案1

您应该删除反引号或命令替换:

test=$(ls -t /opt/inbound/Sample*.dat.gz  | head -1)

或者

test=`ls -t /opt/inbound/Sample*.dat.gz  | head -1`

命令替换

通过添加两者,您的代码将尝试执行它找到的最后一个文件名

答案2

反引号$( … )差不多一样. 你正在做类似的事情

test = $( $(ls -t /opt/inbound/Sample*.dat.gz  | head -1) )

即执行ls … | head …,然后执行它返回的任何内容:/opt/inbound/Sample_04142019_05_52_03.dat.gz显然。您不想执行此操作。

此外,您即将执行test,不会将任何内容保存到变量中。使用参数和test = whatever运行。正确的变量赋值不包含以下空格:。test=whatevertest=whatever

你可能是指

test="$(ls -t /opt/inbound/Sample*.dat.gz  | head -1)"

注意ls不建议解析。无法保证变量将保存所需文件的准确全名。即使您找到一个在所有情况下都返回准确名称的命令,带有尾随换行符的名称也不会被正确存储,因为$( … )会删除任何尾随换行符。

相关内容