下面的代码如何只打印一个文件?
find "$fdir" -type f -name "${fnam}-*.png" -print0 | awk -v RS='\0' -F'[-.]' '{print $(NF-1), $0}' | cat -vet
Run Code Online (Sandbox Code Playgroud)
这给了我
04 /home/flora/edvart/docs/schimmel-04.png$
Run Code Online (Sandbox Code Playgroud)
但做find "$fdir" -type f -name "${fnam}-*.png"
给
/home/flora/edvart/docs/schimmel-04.png
/home/flora/edvart/docs/schimmel-05.png
/home/flora/edvart/docs/schimmel-06.png
/home/flora/edvart/docs/schimmel-07.png
/home/flora/edvart/docs/schimmel-08.png
/home/flora/edvart/docs/schimmel-09.png
/home/flora/edvart/docs/schimmel-10.png
/home/flora/edvart/docs/schimmel-11.png
/home/flora/edvart/docs/schimmel-12.png
/home/flora/edvart/docs/schimmel-13.png
/home/flora/edvart/docs/schimmel-1.png
/home/flora/edvart/docs/schimmel-2.png
/home/flora/edvart/docs/schimmel-3.png
Run Code Online (Sandbox Code Playgroud) 遇到过一些比使用 bash 时shift; shift
更好的
语句,但我需要一些令人信服的解释。如果位置参数的传递方式出现问题,会发生shift 2
什么以及如何更好地处理问题?shift; shift
我有以下bash
条件测试需要更改。
if (( exec_rc == 1 )) && [ -z "$keymap_actm" ] && [ -n "$modmap_actm" ]; then
Run Code Online (Sandbox Code Playgroud)
(( exec_rc == 1 ))
必须始终为真。
但如果两者之一[ -z "$keymap_actm" ]
或[ -n "$modmap_actm" ]
为真,我想执行条件的主体。
什么是实现我想要的目标的可读方式?
我正在使用 rsync 使用命令传输一些文件
rsync -acv --progress ./d-planetr ./c3-remotsn/
Run Code Online (Sandbox Code Playgroud)
假设我停止传输并再次重新启动,是否可以确保所有文件传输成功完成?
我正在尝试使用全局模式进行匹配。然而,这场比赛失败了:
dgt='^+([0123456789])$'
[[ "$1" == $dgt ]] && echo "SUCCESS" || echo "FAILURE"
Run Code Online (Sandbox Code Playgroud) 我有以下正则表达式并希望将它们转换为 bash 模式。
itg='^[-+]?[0-9]*$'
fxp='^[-+]?[0-9]*[.,]?[0-9]+$'
flp='^[-+]?[0-9]*[.,]?[0-9]+([eE][-+]?[0-9]+)?$'
Run Code Online (Sandbox Code Playgroud)
我正在尝试匹配数值
Integral Values 1 21 144 -17
Fixed point values 3.142 0.334 .345 -7.345 -0.34345
Floating point values 3.142E-2 43.234E+3 234.345e7
Run Code Online (Sandbox Code Playgroud)
我正在使用 bash 脚本,使用BRE
or ERE
。
我想使用printf
带有特定格式字符串的快捷命令,并提出了以下内容。
local PF="printf %s\n"
$PF "Some Text"
Run Code Online (Sandbox Code Playgroud)
它完成了这项工作,但想知道使用这种方法时是否存在任何警告,这可能会导致格式字符串的误解。
为什么这个正则表达式在 bash 中不起作用?
if [[ "$vl" =~ ^ *[{-].* ]]; then
Run Code Online (Sandbox Code Playgroud)
我想匹配任意数量的空格,后跟{
or -
,以及后面的任何内容。
在 bash 中使用 printf 时,是否总是需要提供格式字符串,如下所示。
printf "" "V01 Oct 2021"
Run Code Online (Sandbox Code Playgroud)
或者printf "V01 Oct 2021"
还是可以的?
我有以下 awk 代码,它创建数组kaggr
,然后将值存储在knam
和中knum
。印象中循环不应该从 开始1
,而是从 开始0
,但for ( i=1; i<n; i+=2 )
似乎有效。awk 数组应该从索引开始0
,那么从索引开始时一切正常吗1
?
awk 'BEGIN { kl=0
"tput sgr0" |& getline rst
ks = "Wht 15 Grn 34 Blu 39 Ylw 11 Red 196 Amb 214"
n = split(ks, kaggr)
for ( i=1; i<n; i+=2 ) {
knam = kaggr[i] ":"
knum = kaggr[i+1]
}
}
Run Code Online (Sandbox Code Playgroud)