将输出重定向到文件shell脚本

时间:2017-04-27 16:43:36

标签: linux bash shell ubuntu

我尝试创建一个脚本,该脚本将从用户那里获取输入(名称和用户名),然后将该输入定向到使用该用户名命名的文本文件。我下面的代码将创建文件,但不会将任何数据导入文件。 任何人都可以帮我解决这个问题吗?感谢

echo "What is your name?"
read name
echo "What is your chosen username?"
read username
cd user_records
$name >> "$username".txt
$username >> "$username".txt

2 个答案:

答案 0 :(得分:3)

很少有评论:

  • 您可以使用-p参数进行阅读。
  • 除非您知道为什么不想要它,否则也始终使用-r
  • 您应该检查cd的成功 - 如果不成功怎么办?
  • 始终引用您的变量
#!/bin/bash
err(){ echo "$@" >&2; return 1; }

udir="./user_records"

read -r -p  'What is your name?> ' name
read -r -p  'What is your chosen username?> ' username
cd "$udir" || err "Can't cd to $udir" || exit 1
printf "%s\n%s\n" "$name" "$username" >> "$username.txt"

或者您可能不需要cd,在这种情况下您可以写

err(){ echo "$@" >&2; return 1; }

udir="./user_records"

read -r -p  'What is your name?> ' name
read -r -p  'What is your chosen username?> ' username
[[ -d "$udir" ]] || err "The $udir doesn't exists" || exit 1
printf "%s\n%s\n" "$name" "$username" >> "$udir/$username.txt"

答案 1 :(得分:0)

Lohmar给出了答案,但你需要回应变量。您的代码正在尝试执行$ name和$ username,但您需要将其用作数据,而不是命令。

"${array[$idx]}"