linux - 如果每个结果使用多个命令,则无法获得 bash

标签 linux bash shell if-statement

我一直在尝试让这个的各种版本工作:

[[ -e "~/usersl" ]] && { user=`cat ~/usersl`; echo Username: $user; } || { read -p "Username:" user; echo $user > ~/usersl; }

主要目标是将 if..then..else 全部放在一行中。根据我在本网站和其他网站上阅读的内容,这应该可行。它应该检查 usersl 文件是否存在,如果存在,则打印出检测到的用户名并填充 $user 变量。如果 usersl 文件不存在,那么它应该询问用户名并同时填充变量,然后将新用户名记录到文件中。一旦完成下一次命令运行文件已经存在并且它只显示用户名并传播变量。希望我的解释不会过于复杂,但任务非常简单。

非常感谢任何帮助

最佳答案

您最直接的错误与条件语法无关,而是由您在测试中引用的错误引起的:

if [[ -e ~/usersl ]]; then
  user=$(<~/usersl)
  echo "Username: $user"
else
  read -p "Username:" user
  echo "$user" > ~/usersl
fi

作为单行,这将是:

if [[ -e ~/usersl ]]; then user=$(<~/usersl); echo "Username: $user"; else read -p "Username:" user; echo "$user" >~/usersl; fi

  • 波浪号扩展被引号抑制。如果有疑问,请写 $HOME 而不是 ~
  • 使用a && b || c 容易出错:如果 a 成功并且 b 尝试运行但失败,您可以让 c 运行 即使 b 也被调用了

关于linux - 如果每个结果使用多个命令,则无法获得 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088705/

相关文章:

linux - wc -c 和 wc -m 始终给出相同的输出?

android - 这个气球状的 UI 组件叫什么名字? (安卓/Linux)

python - 如何在 linux 中为 python 3 安装模块 "qpoases"? (二次规划包)

bash 脚本,调用函数作为条件测试

linux - 一行设置环境变量并执行命令,在sh和bash中得到不同的结果

sql-server - Linux 上的 SQL Server > 批量导入错误

c++ - 无法使用 bash 脚本正确重启应用程序

perl - 我如何将 "look behind"的 bash 命令行参数扩展?

linux - Bash - 别名 unalias

bash - 更改多个文件夹的修改日期以匹配其最近修改的文件的日期