小编ilk*_*chu的帖子

“--”(双破折号)是什么意思?

--compgen命令中看到使用过。

例如:

compgen -W "foo bar baz" -- b
Run Code Online (Sandbox Code Playgroud)

里面的意思是什么--

command-line shell utilities syntax

659
推荐指数
5
解决办法
25万
查看次数

为什么我的 Bash 脚本不能识别别名?

在我的~/.bashrc文件中有两个定义:

  1. commandA,这是更长路径的别名
  2. commandB,这是 Bash 脚本的别名

我想用这两个命令处理同一个文件,所以我写了以下 Bash 脚本:


#!/bin/bash

for file in "$@"
    do
    commandA $file
    commandB $file
done
Run Code Online (Sandbox Code Playgroud)

即使在退出会话并重新登录后,command not found当我运行此脚本时,Bash 仍会提示我输入两个命令的错误。

我究竟做错了什么?

bash alias

272
推荐指数
5
解决办法
22万
查看次数

使用不等于运算符进行字符串比较

我试图检查PHONE_TYPE变量是否包含三个有效值之一。

if [ "$PHONE_TYPE" != "NORTEL" ] || [ "$PHONE_TYPE" != "NEC" ] ||
   [ "$PHONE_TYPE" != "CISCO" ]
then
    echo "Phone type must be nortel,cisco or nec"
    exit
fi
Run Code Online (Sandbox Code Playgroud)

上面的代码对我不起作用,所以我尝试了这个:

if [ "$PHONE_TYPE" == "NORTEL" ] || [ "$PHONE_TYPE" == "NEC" ] ||
   [ "$PHONE_TYPE" == "CISCO" ]
then
    :        # do nothing
else
    echo "Phone type must be nortel,cisco or nec"
    exit
fi
Run Code Online (Sandbox Code Playgroud)

这种类型的任务有更干净的方法吗?

shell shell-script

165
推荐指数
4
解决办法
58万
查看次数

sort 是否支持就地对文件进行排序,例如 `sed --in-place`?

我是盲人还是没有类似的--in-place选择sort

为了将结果保存到输入文件,sed 使用-i( --in-place)。

将输出重定向sort到输入文件

sort < f > f
Run Code Online (Sandbox Code Playgroud)

导致它为空。如果没有--in-place选择 - 也许有一些技巧可以方便地做到这一点?

(我唯一想到的是:

sort < f > /tmp/f$$ ; cat /tmp/f$$ > f ; rm /tmp/f$$
Run Code Online (Sandbox Code Playgroud)

移动不是正确的选择,因为可能会更改文件权限。这就是为什么我用临时文件的内容覆盖,然后将其删除。)

text-processing sort

108
推荐指数
4
解决办法
4万
查看次数

在bash中,是否可以在大括号扩展中使用整数变量

我有以下 bash 脚本:

#!/bin/bash

upperlim=10

for i in {0..10}
do
echo $i
done

for i in {0..$upperlim}
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)

第一for回路(没有变量upperlim中的循环控制)工作正常,但所述第二for环路(可变upperlim的循环控制)没有。有什么办法可以修改第二个for循环以使其正常工作吗?谢谢你的时间。

shell bash shell-script for

78
推荐指数
3
解决办法
8万
查看次数

服务器管理员给我发送了一个要使用的私钥。为什么?

我应该访问服务器,以便将公司的临时服务器和实时服务器链接到我们的部署循环中。他们这边的管理员设置了两个实例,然后在服务器上创建了一个用户,供我们通过 SSH 登录。我已经习惯了这么多。

在我看来,现在会发生的是我将我的公钥发送给他们,该公钥可以放在他们的授权密钥文件夹中。然而,他们通过电子邮件向我发送了一个文件名id_rsa,该文件名包含-----BEGIN RSA PRIVATE KEY-----在文件中。这是正常的吗?

我环顾四周,可以找到大量关于从头开始生成和设置我自己的密钥的资源,但没有服务器的私钥开始。我应该使用它为自己生成一些密钥还是?

我会直接问系统管理员,但不想显得白痴,浪费我们中间的每个人的时间。我是否应该忽略他发给我的密钥并要求他们将我的公钥放在他们的授权文件夹中?

security ssh administration key-authentication

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

为什么 ( exit 1 ) 不退出脚本?

我有一个脚本,当我想要它时它不会退出。

具有相同错误的示例脚本是:

#!/bin/bash

function bla() {
    return 1
}

bla || ( echo '1' ; exit 1 )

echo '2'
Run Code Online (Sandbox Code Playgroud)

我假设会看到输出:

:~$ ./test.sh
1
:~$
Run Code Online (Sandbox Code Playgroud)

但我实际上看到:

:~$ ./test.sh
1
2
:~$
Run Code Online (Sandbox Code Playgroud)

()命令链是否以某种方式创建了一个范围?exit如果不是脚本,退出是什么?

shell-script exit subshell

60
推荐指数
3
解决办法
5万
查看次数

shell 中的 "..."、'...'、$'...' 和 $"..." 引号之间有什么区别?

有时候,我看到shell脚本使用所有的引用一些文字,这些不同的方式:"..."'...'$'...',和$"..."。为什么有这么多不同类型的引用被使用?

他们的行为是否有所不同或影响了我在他们内部可以做的事情?

shell bash zsh shell-script quoting

57
推荐指数
1
解决办法
7660
查看次数

主流 *NIX shell 之间的根本区别是什么?

主流 *NIX shell 之间的根本区别是什么,哪些场景可能会促使您使用一种而不是另一种?我知道其中一些可能归结为用户偏好,但我只使用过 Bash,我很想知道另一个 shell 可能有用的地方。

此外,在一个或另一个 shell 下运行时是否对用户编写的 shell 脚本有影响,或者仅仅是更改文件顶部的 shell 的问题?我的直觉说这并不容易。

shell

55
推荐指数
4
解决办法
2万
查看次数

内置的冒号 ':' 有什么作用?

我已经破解了很多 shell 脚本,有时最简单的事情让我感到困惑。今天我遇到了一个广泛使用:(冒号)bash 内置的脚本。

文档似乎很简单:

: (a colon)  
     : [arguments]  
Run Code Online (Sandbox Code Playgroud)

除了扩展参数和执行重定向之外,什么都不做。返回状态为零。

但是,我以前只在 shell 扩展的演示中看到过这个。我遇到的脚本中的用例广泛使用了这种结构:

if [ -f ${file} ]; then
    grep some_string ${file} >> otherfile || :
    grep other_string ${file} >> otherfile || :
fi
Run Code Online (Sandbox Code Playgroud)

实际上有数百个 grep,但它们只是更多相同。除了上面的简单结构之外,不存在输入/输出重定向。稍后在脚本中不会检查返回值。

我正在阅读这是一个无用的结构,上面写着“或什么都不做”。用“或什么都不做”来结束这些 grep 的目的是什么?在什么情况下,这个构造会导致与简单地|| :从所有实例中删除不同的结果?

shell-script shell-builtin

49
推荐指数
7
解决办法
1万
查看次数