小编Tho*_*sen的帖子

使用sed,如何匹配字符类中的方括号?

这是原始数据的一大块:

00000000  54 6f 70 69 63 20 46 6f  72 75 6d 20 52 65 70 6c  |Topic Forum Repl|
00000010  69 65 73 20 4c 61 73 74  20 70 6f 73 74 20 31 20  |ies Last post 1 |
00000020  4c 69 6e 75 78 20 54 6f  64 61 79 20 31 34 3a 34  |Linux Today 14:4|
00000030  36 3a 35 37 20 62 79 20  4c 69 6e 75 78 20 4f 75 …
Run Code Online (Sandbox Code Playgroud)

sed

6
推荐指数
1
解决办法
7083
查看次数

bash:嵌套的交互式读取在还使用read的循环内

在while循环中,如何编写交互式响应?

#!/bin/bash

shows=$(< ${HOME}/.get_iplayer/tv.cache)

# ...
# ... stuff with shows omitted ...
# ...

function print_show {
# ...
    return
}

while read -r line
do
    print_show "$line"

    read -n 1 -p "do stuff? [y/n] : " resp  # PROBLEM

# ...
# resp actions omitted
# ...

done <<< "$shows"
Run Code Online (Sandbox Code Playgroud)

因此,读取文件,进行“处理”,然后将所得的面向行的数据用于while read循环中

但是while循环中的读取行无法按预期工作,也就是说,它没有等待用户响应,这可能是由于while read封装了上下文所致。

您能否建议如何解决此问题或其他机制?

bash interactive while-loop

4
推荐指数
1
解决办法
2561
查看次数

一个似乎不起作用的bash函数定义

前几天我正在试验shell函数,目的是覆盖ls命令.目的是让shell ls首先调用我的函数然后如果第一个开关是"-y"做一件事,否则调用常规函数/bin/ls,但结果表现为我不理解的方式.

为了启用它,我决定使用"-y"作为开关,因为:

$ ls -y
ls: invalid option -- 'y'
Try `ls --help' for more information.
Run Code Online (Sandbox Code Playgroud)

所以它无法打破核心功能ls.无论如何,将问题简化为最简单的问题,并通过其他一些示例来帮助突出问题:

$ function ls() { [[ "y$1" == "y-y" ]] && echo LS ; } 
$ function less() { [[ "y$1" == "y-y" ]] && echo LESS ; }
$ function try() { [[ "y$1" == "y-y" ]] && echo TRY ; }
Run Code Online (Sandbox Code Playgroud)

所以我压倒一切ls,less并定义try哪个像"控制"标本:)

现在调用这种方式:

$ ls ; less ; …
Run Code Online (Sandbox Code Playgroud)

bash ls

3
推荐指数
2
解决办法
1977
查看次数

bash substring古怪

这是密码生成器的一个片段:

# ...
ascstring='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHILKLMNOPQRSTUVWXYZ!#$%&()*+-;   <=>?@^_`{|}~'
asclen=${#ascstring} # modulo ascstring
#...
r=$(openssl rand 100000 | sha1sum) # generates 40 hex sequence
#...
for i in {0..38..2}
do
    v=${r:i:2} ; echo -n ${ascstring:$[ 0x$v % $asclen]:1}
done
echo
# ...
Run Code Online (Sandbox Code Playgroud)

它使用了各种定义ascstring但是所显示的定义偶尔会引起问题.大多数情况下没关系:

$ ./password-gen.sh 
`?OCw&a|746|SRm8b&c=

$ ./password-gen.sh 
eE?R%3NdUjSpd<)wPuBV

$ ./password-gen.sh 
0X8)p8hPobt$x@iGy?!I

$ ./password-gen.sh 
P7LD;p<^lX1d87;{V4S$
Run Code Online (Sandbox Code Playgroud)

但偶尔:

$ ./password-gen.sh 
5w@$ypassword-gen.sh@)A|l`06B(50f7
Run Code Online (Sandbox Code Playgroud)

如果我*从中移除了ascstring这似乎永远不会发生.我想知道发生了什么以及如何解决这个问题(不减少熵)?

谢谢.

bash substring

3
推荐指数
1
解决办法
169
查看次数

标签 统计

bash ×3

interactive ×1

ls ×1

sed ×1

substring ×1

while-loop ×1