【发布时间】:2020-03-07 22:53:06
【问题描述】:
我编写了一个 bash 脚本,它只从文件夹名称中提取日期,并将提取的内容(日期)放入一个数组中以执行其他操作。本地工作正常,当我想在服务器上执行此远程操作时出现问题。
我通过 ssh 访问服务器,从文件夹名称中提取日期的部分工作正常,主要问题是当我想用日期填充数组时。
以下是我脚本中的一些代码:
#! bin/bash
ssh -t -t user@serveradress << 'EOT'
# go in the path where to perform the extraction of dates
cd share/Pictures_G
# create an array, perform the extraction of dates , populate the array with dates
declare -a all_dates
all_dates=($(ls | grep -o "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}"))
len=${all_dates[@]}
echo "$len"
EOT
所以命令 ls | grep -o "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" 单独工作正常,但是当我以我在上面脚本中使用的方式使用它时,会提供下一个输出:
all_dates=
len=
echo
据我了解,没有任何东西传递给数组。
【问题讨论】:
-
ls仅列出文件而不列出日期。您还可以通过len=${#all_dates[@]}获得数组的长度。可能您想使用find命令提供按日期查找文件的机制。 -
你好。 ' ls ' 命令是那里更复杂结构的一部分。我也不想使用'find',因为在描述中如何指定我想从名称中提取日期,这是与我的目的相关的信息。 @stephanmg
-
您需要将它存储在数组中吗?
-
@stephanmg 我要去看看。谢谢!
标签: arrays bash ssh grep remote-server