小编Ber*_*enz的帖子

bash:读取文件时提示用户输入

我正在处理一个解析制表符分隔文件的 bash 脚本。如果文件包含单词“prompt”,脚本应该要求用户输入一个值。

似乎在读取文件时,“读取”命令无法从标准输入读取,因为“读取”被简单地跳过。

有没有人可以解决从文件和标准输入中读取的问题?

注意:该脚本应在 Git Bash 和 MacOS 上运行。

下面是一个失败的小代码示例:

#!/bin/bash

#for debugging
set "-x"


while IFS=$'\r' read -r line || [[ -n "$line" ]]; do
  [[ -z $line ]] && continue

  IFS=$'\t' read -a fields <<<"$line"

  command=${fields[0]}

  echo "PROCESSING "$command
  if [[ "prompt" = $command ]]; then
    read -p 'Please enter a value: ' aValue
    echo
  else 
    echo "Doing something else for "$command
  fi
done < "$1"
Run Code Online (Sandbox Code Playgroud)

输出:

$ ./promptTest.sh promptTest.tsv
+ IFS=$'\r'
+ read -r line …
Run Code Online (Sandbox Code Playgroud)

bash stdin read

5
推荐指数
1
解决办法
4869
查看次数

Bash:while 循环编号变量

我的环境可以使用以下格式定义灵活数量的变量:

Var1Value=A
Var2Value=B
Var3Value=C
Run Code Online (Sandbox Code Playgroud)

我现在想遍历变量,只要它们存在。在伪代码中:

i=1
while [exists "Var"$i"Value"]; do
 echo "found variable, now doing some more complex processing logic"
 #do some more stuff
 i=$((i + 1)) 
done
Run Code Online (Sandbox Code Playgroud)

我是否在 bash 中完成这项工作(不使用数组)?

bash variable

0
推荐指数
1
解决办法
753
查看次数

标签 统计

bash ×2

read ×1

stdin ×1

variable ×1