传递变量问题 - Bash

Bob*_* P. 2 scripting bash sudo awk

我有以下问题:

#!/bin/bash
NUM=`cat accounts | wc -l`;
for i in {1..$NUM}
do
   account=`awk "NR==$i" accounts`;
    echo -e "\nAccount: $account\n";
  sudo ./backup_maildir $account;
done
Run Code Online (Sandbox Code Playgroud)

“accounts”是一个包含常规电子邮件地址的文件,每行一个。
backup_maildir 是期望脚本。

执行主脚本时,第 6 行成功回显当前邮件地址,但下一行没有将该字符串传递给 backup_maildir 脚本。如果 $account 变量是 user@domain.com,则传递给 backup_maildir 的字符串是 {user@domain.com?} ?! 这怎么可能?如何解决?

Hrv*_*jar 10

嗯,多么疯狂的脚本:) 让我们试试这样:)

#!/bin/bash 
cat accounts | while read account 
do
    echo -e "\n Account: $account \n";
    echo sudo ./backup_maildir  "$account"; 
done
Run Code Online (Sandbox Code Playgroud)

如果一切看起来都很好并且 sudo 行按预期在脚本之外工作,则放弃回声和瞧

  • 然后`dos2unix`它:) (3认同)