假设我有:
variable=string
Run Code Online (Sandbox Code Playgroud)
现在想用括号替换第一个字母
${variable/firstletter/[firstletter]}
Run Code Online (Sandbox Code Playgroud)
最后,我想在脚本中使用它来修改正则表达式模式,使其与自身不匹配:
ps -e -o time,user,pid,ppid,comm,args | grep ${variable/firstletter/[firstletter]}
Run Code Online (Sandbox Code Playgroud)
我想用它代替额外的管道和grep -v grep或pgrep
另外,也许您知道如何使用 awk 实现这样的过程 grep 而不是打印 awk 命令本身?
您只需要获取参数的第一个字符,用括号括起来,然后再添加其余部分:
bash-[508]$ variable=string
bash-[509]$ echo $variable
string
bash-[510]$ echo $variable to [${variable:0:1}]${variable:1}
string to [s]tring
Run Code Online (Sandbox Code Playgroud)
所以你的命令可能是这样的:
ps -e -i time,user,pid,ppid,comm,args | grep "[${variable:0:1}]${variable:1}"
Run Code Online (Sandbox Code Playgroud)
这是在变量中的字符范围上使用 bash 参数替换,给出从哪里开始,以及抓取应该多长时间。
${variable:0:1}, 从字符 0(字符串的开头)开始,并抓取 1 个字符。从而隔离第一个字母,v。
${variable:1},然后从字符 1 开始,没有定义的范围,抓取所有到 $variable 的末尾,抓取ariable.