我正在编写一个 bash 脚本,我需要从 Lua 文件中删除注释,这些文件的格式如下:
--like this
foo="bar" --or like this
--[[ or like this ]]
--[[
or
like
this
]]
我知道我可以用它sed 's/--.*$//' ${my_file}
来删除单行注释,但我怎样才能解决多行注释呢?
谢谢!
我编写了一个 bash 函数,它接受命令作为参数,在后台运行它,并允许用户通过按任意键来终止命令。这部分工作正常。
但是,当我将它通过管道传输到whiptail
对话框仪表时,whiptail 按预期运行,但在它返回后,终端将不再显示按键。我仍然可以运行命令,只是看不到我正在输入的内容打印到屏幕上。输出的格式也很奇怪,stdout 出现在$
.
我很确定该read
命令是造成这种行为的原因,但我不明白为什么。任何人都可以提供任何见解吗?
#!/bin/bash
function killOnKeypress() {
local runcommand="${1}"
local args=(${@:2})
# Run the command in the background
"${runcommand}" ${args[@]} &
# Get the process id of $runcommand
local pid=$!
# Monitor $runcommand and listen for keypress in foreground
while kill -0 "${pid}" >/dev/null 2>&1; do
# If key pressed, kill $runcommand and return with code 1
read -sr -n 1 -t 1 && kill "${pid}" && return 1
done
# Set $? to return code of $runcommand
wait $pid
# Return $runcommand's exit code
return $?
}
function count100() {
for ((i = 0; i < 100; i++)); do
echo $i
sleep .02
done
}
killOnKeypress "count100" | whiptail \
--gauge "Counting to 100" \
16 56 \
0