在 Linux 中,是否有一个层/脚本来处理打开文件的程序请求?
就像你在 bash: 中打开文件描述符一样:exec 3 <>/documents/foo.txt
或者你的文本编辑器打开/documents/foo.txt
我不敢相信一个编辑器可以“打开一个文件”自己进行读/写访问。
我宁愿想象这是对“层”(init.d 脚本?)的请求,它可以从只打开一定数量的文件开始,并通过它们的访问类型,通过它们是什么进程保持打开文件的标签打开等
在成语中
for i in $directories; do
# ...
done
Run Code Online (Sandbox Code Playgroud)
...变量是$i
局部的还是全局的?
如果碰巧有一个同名的全局变量怎么办。bash 是否与全局变量或for ... in ...
标头之一一起使用?
我需要处理一些包含路径的字符串。如何将这样的字符串拆分/
为分隔符,导致路径部分数量未知,最后我如何提取生成的路径部分?
cut
显然不是首选工具,因为它需要您事先知道零件的数量,而且它也不会输出每个零件以便我可以使用readarray
或mapfile
将它们收集到数组中。
例如,我如何对字符串进行排序
"1.3.2 1.3.1 1.2.3 1.1.1.5"
Run Code Online (Sandbox Code Playgroud)
到
"1.1.1.5 1.2.3 1.3.1 1.3.2"
Run Code Online (Sandbox Code Playgroud)
所以我不知道版本包含多少个数字,也不知道字符串中有多少个版本。
如何解决这个问题?
谢谢
我有一个 find 命令,我想从一个任意目录发出它,用一个$directory
变量代替.
当前工作目录的点。
这是什么工作
find $directory -maxdepth 1 -type d -name "test*"
Run Code Online (Sandbox Code Playgroud)
这给了我一些结果。
这也有效
find . -maxdepth 1 -type d -regextype posix-extended -regex "^./[a-zA-Z0-9]+([-_]?[a-zA-Z0-9]+)*-[0-9]{1,3}(.[0-9]{1,3}){,3}\$"
Run Code Online (Sandbox Code Playgroud)
但是,$directory
它不起作用。请注意,我删除./
了正则表达式开头的 。
find $directory -maxdepth 1 -type d -regextype posix-extended -regex "^[a-zA-Z0-9]+([-_]?[a-zA-Z0-9]+)*-[0-9]{1,3}(.[0-9]{1,3}){,3}\$"
Run Code Online (Sandbox Code Playgroud)
为什么呢?
谢谢
如何通过多行在终端中定义函数?
# this doesn't work
function my_func { \
echo "number 5" \
}
Run Code Online (Sandbox Code Playgroud)
非常基本。还是讨厌。
当我在中尝试以下表达式时,bash
收到一条奇怪的错误消息:
[: -lt: unary operator expected
Run Code Online (Sandbox Code Playgroud)
首先是函数定义
some_func () {
(( 3 + 5 ))
}
Run Code Online (Sandbox Code Playgroud)
还有表情
[ $(some_func) -lt 10 ] && true
Run Code Online (Sandbox Code Playgroud)
我想问题是将运算符-lt
与命令替换和/或算术扩展混合在一起?
退出代码$?
为 2,消息为an unary op was expected
。
我该如何正确地使用自定义的方法是测试参数,例如,如果一个字符串是一个单词,或者一个版本号,在有条件的情况下if
,while
或until
声明?
特别是(双)大括号似乎在测试一侧的方法上存在问题,例如-gt
.
我可以只调用一个方法吗?如果是,那么这样做的上下文要求是什么?所以在(双)括号的内部/外部以及不同的语句中if
,while
以及until
- 他们如何在没有命令替换的情况下对调用函数做出反应?
如果我不使用命令替换来调用不同的测试方法,我还可以通过布尔运算符连接它们吗?
对于它们的连接,是否存在必须使用括号或双括号的用例?
我什么时候需要命令扩展?我有时需要算术扩展来调用函数吗?