我在/ home / maxg / SpProData中编写了一个bash脚本。运行得很好。该脚本的目标计算机目录称为/ home / maxg / sppro
为了在编写脚本的计算机上测试脚本,我将其从/ home / maxg / SpProData重命名为/ home / maxg / sppro。
我更改了脚本的主目录变量,现在它卡住了ls命令结果传递到变量的位置,就像这样:
_WORKING_ZIP=$(ls -td ${_SP_LINK_CFG_FILENAME}_${_PERF_DIR_NAME_PREFIX}Archive_${_TODAY_VARIANT}_* | head -1)
导致:
[info ] Looking for the PerformanceDataArchive (.zip) file ...
find ............. ArgyleCourt_PerformanceDataArchive_2020-05-09_*
ls: cannot access 'ArgyleCourt_PerformanceDataArchive_2020-05-09_*': No such file or directory
[error] (2) = ls had a more serious problem; e.g. directory or file not found... exiting!
常量是:
SP-LINK cfg file name...: ArgyleCourt
Perf DIR name prefix....: PerformanceData
Today variant...........: 2020-05-09
SP PRO directory........: /home/maxg/sppro
文件存在:
drwxrwxr-x 3 maxg maxg 4096 May 16 19:59 .
drwxr-xr-x 56 maxg maxg 4096 May 16 19:33 ..
-rw-r--r-- 1 maxg maxg 55477 May 9 02:03 ArgyleCourt_PerformanceDataArchive_2020-05-09_02-03-07.zip
-rw-rw-r-- 1 maxg maxg 56208 May 15 22:27 GetSpProData.awk
-rw-rw-r-- 1 maxg maxg 1511 May 16 19:52 GetSpProData.conf
-rwxrwxr-x 1 maxg maxg 23530 May 16 20:04 GetSpProData.sh
在终端中运行命令将返回所需的结果:
ls ArgyleCourt_PerformanceDataArchive_2020-05-09_*
ArgyleCourt_PerformanceDataArchive_2020-05-09_02-03-07.zip
这完全没有道理。仅进行了两项更改:
...稍后:
我将目录名(和变量)改回了SpProData,同样的无效结果。
...稍后:
将脚本复制到目标计算机,它就运行了!(看起来像一个漫长的夜晚):(
您提供的是相对路径而不是绝对路径。
尝试
_WORKING_ZIP=$(ls -td /home/maxg/sppro/${_SP_LINK_CFG_FILENAME}_${_PERF_DIR_NAME_PREFIX}Archive_${_TODAY_VARIANT}_* | head -1)
编辑:也不要parse ls
您可以使用
_WORKING_ZIP=$(head -1 <<< /home/maxg/sppro/${_SP_LINK_CFG_FILENAME}_${_PERF_DIR_NAME_PREFIX}Archive_${_TODAY_VARIANT}_*)
示例:
$ls my_file_is_here.txt
ls: cannot access 'my_file_is_here.txt': No such file or directory
$ls ~/test/my_file_is_here.txt
/home/renegade/test/my_file_is_here.txt
$cd ~/test/
$ls my_file_is_here.txt
my_file_is_here.txt
$
嗯...感谢您的阅读,对不起您的发言。
只有两个更改?!不...三个变化...
我进一步声明,是的,请尽早...
cd $_SP_PRO_DIR
...太早了!在读取配置文件之前,该文件定义了此常量。
这导致cd语句不带参数。且不带参数的cd上升到父级。
因此ls命令找不到文件。
嗯,另一个难学的教训。 :)