下面的命令在命令行模式下运行得非常好
find . -maxdepth 1 -name "*.xlsx" -exec ssconvert {} --export-type=Gnumeric_stf:stf_csv \;但是,在SFTP下载代码之后在Bash脚本文件中添加相同的内容时,它不会执行。请帮帮忙。谢谢!
Bash脚本代码-
/usr/bin/expect<<EOD
spawn /usr/bin/sftp -o Port=${PORT} username@hostname
expect "password:"
send "$Pass_Pwd\r"
expect "sftp>"
send "lcd ${Src_Dir}\r"
expect "sftp>"
send "mget ${File1}\r"
expect "sftp>"
send "mget ${File1}\r"
expect "sftp>"
send "bye\r"
EOD
echo "Download done"
find . -maxdepth 1 -name "*.xlsx" -exec ssconvert {} --export-type=Gnumeric_stf:stf_csv \;发布于 2019-11-15 07:54:46
使用find可能会导致未执行的内容,因为它可能会产生不继承父变量的子进程。根据我在您的代码中所看到的,这种情况不应该发生,但是:
使用"./“目录的
子进程。
总之,下面是您可能需要编写的代码的一个强化示例:
workdir = /data/ftpdownloads
cd "$workdir" || { echo 'Failed to chdir into $workdir' ; exit 1; }
# Insert your expect script here
while IFS= read -r -d $'\0' file; do
ssconvert "$file" --export-type=Gnumeric_stf:stf_csv
done < <(find "$workdir" -type f -iname "*.xlsx" -print0)免责声明:用于bash :)
https://stackoverflow.com/questions/58865984
复制相似问题