标签: bash

检查命令行中的数字是否为 2 的幂

我无法制作一个 bash 脚本来检查命令行中的输入数字是否为 2 的幂

输入

# ./pow2script.sh xyzdf 4 8 12 -2 USAD
Run Code Online (Sandbox Code Playgroud)

期望的输出:期望的输出应该在单独的行上

4
8
Run Code Online (Sandbox Code Playgroud)

因为只有 4 是 2^2 而 8 是 2^3

pow2script.sh 的内容

#!/bin/bash

function is_power_of_two () {
    declare -i n=$1
    (( n > 0 && (n & (n - 1)) == 0 ))
}

for number; do
    if is_power_of_two "$number"; then
        printf "%d\n" "$number"
    fi
done
Run Code Online (Sandbox Code Playgroud)

scripting bash

-5
推荐指数
2
解决办法
4960
查看次数

bashrc 是用什么语言编写的

通过向 .bashrc 文件中添加一个函数,我发现了一种很酷的方法来提升 1 个以上的目录级别。

只需打开 .bashrc 文件并插入函数即可完成:

#user defined functions
function cd_up() {
  cd $(printf "%0.s../" $(seq 1 $1 ));
}
alias 'cd..'='cd_up'
Run Code Online (Sandbox Code Playgroud)

我想了解如何阅读它。

它是用什么语言编写的?

bash cd-command shell-script

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

请解释 exec、trap、mknod、tee 的作用

我有一个从其中一个网站获得的脚本。当我运行它时,它给出了“Hello”作为输出,但我无法理解脚本的工作原理。

谁能解释一下脚本实际上在做什么?

#!/bin/bash

echo hello

if test -t 1; then
  # Stdout is a terminal.
  exec >log
else
  # Stdout is not a terminal.
  npipe=/tmp/$$.tmp
  trap "rm -f $npipe" EXIT
  mknod $npipe p
  tee <$npipe log &
  exec 1>&-
  exec 1>$npipe
fi

echo goodbye
Run Code Online (Sandbox Code Playgroud)

bash io-redirection shell-script

-7
推荐指数
1
解决办法
353
查看次数

为什么跟随输出`$var`而不是`3`?

为什么下面的例子来自Arrow 的回复输出$var而不是3

我单引号或反斜杠$var'$var'or \$var,希望

  • first$var将逐字传递到可执行程序的执行环境中/bin/echo,并且
  • 然后在可执行程序的执行环境中/bin/echovar=3当发生参数扩展时应用环境变量$var

为什么在可执行程序的执行环境中不会发生参数扩展/bin/echo笔记:

  • 在原shell中,$var是单引号或反斜杠,所以在原shell的执行环境中不应该展开。

  • 原来的shell去掉了周围的单引号或者反斜杠$var,然后把$var环境变量var=3传入到执行环境中运行/bin/echo,所以我认为参数扩展$var 应该发生在运行的执行环境中/bin/echo

请注意,我使用set -x打印出跟踪信息,但无法弄清楚扩展后但执行前的实际结果。

谢谢。

tim$ unset var
$ set -x

tim$ var=3 /bin/echo '$var'
+ var=3
+ /bin/echo '$var'
$var

tim$ var=3 /bin/echo \$var
+ var=3
+ /bin/echo '$var'
$var

$ …
Run Code Online (Sandbox Code Playgroud)

bash

-7
推荐指数
1
解决办法
132
查看次数

什么是屏蔽模式?

我知道在 GNU/Linux 中,文件权限也称为文件模式,并且术语掩码至少可以表示以下不同的含义:

  1. 所述的umask shell内建(通常含义)。
  2. umask的shell内建的相应数系统调用
  3. umask的shell内建的相应数命令umask
  4. shell 进程值也称为文件创建掩码,以及位掩码或只是掩码
  5. 用户特定的文件创建掩码影响该用户独有的过程(然后它称为用户掩码?用户的文件创建掩码)。

内置的umask外壳

可以通过执行带有适当参数的命令来使用内置的umask shell umask
通过这样做,我们为当前的shell 进程树设置了一个掩码; 要么针对当前 shell 进程树中的所有用户,要么仅针对我们自己的用户; 然而,一般来说,任何此类更改都将继承到新进程,可能是另一个 shell)。

数理逻辑基础

我知道数学逻辑包括连接AKA anding ( ?)的操作,它是内置umask shell的基础。因此:

一组操作数的 and 为真,当且仅当,其所有操作数为真

我进一步了解到,有一个基于该逻辑的同名按位运算。Anding 与数字相加 ( x + y ? z) 或字符串串联 ( …

shell bash umask terminology syntax

-7
推荐指数
2
解决办法
3087
查看次数

rm -rf / 和 rm -rf *.* 之间有区别吗?

rm -rf *.*损坏您的文件系统,rm -rf /而不会这样做吗?

bash rm

-11
推荐指数
1
解决办法
6265
查看次数