小编roa*_*ima的帖子

如何以符合 posix 的方式通过提示获取用户输入到变量中

read -r -p "put an option: " option
echo $option
Run Code Online (Sandbox Code Playgroud)

这有效,但 shellcheck 给了我:

In POSIX sh, read -p is undefined.
Run Code Online (Sandbox Code Playgroud)

如何以符合 posix 的方式通过提示获取用户输入到变量中?

shell-script posix read shellcheck

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

简单的 find 命令将无法运行

我对 Linux 相当陌生,目前我正在尝试运行以下命令,

\n
find ~ -name apt.no\n
Run Code Online (Sandbox Code Playgroud)\n

apt.no我正在另一个列为 的目录中查找montrose-files

\n

shell 没有响应,它只是创建一个新行。谁能向我解释一下为什么这甚至没有产生结果?

\n
bbcharlieca@myvm:~$ find ~ -name apt.no\nbbcharlieca@myvm:~$ \xe2\x96\x88\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

shell find

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

可以将 echo 组合起来以产生 .*/ 和 */ 的单个结果吗?

echo命令根据传递给它的表达式输出不同的结果。工作目录是/home/etc

$ echo .*/
/ ../ .cache/ .config/ .gnupg/ .local/ .mozilla/ .ssh/

$ echo ./*
./Desktop ./Documents ./Downloads ./Music ./Pictures ./Public ./snap ./Templates ./Videos

$ echo .*/*
.cache/event-sound-cache.tdb.d410907cf15246578458d0ad7919eb5e.x86_64-pc-linux-gnu .cache/evolution .cache/fontconfig .cache/gnome-screenshot .cache/gnome-software .cache/gstreamer-1.0 .cache/ibus .cache/ibus-table .cache/libgweather .cache/mesa_shader_cache .cache/mozilla .cache/thumbnails .cache/ubuntu-report .cache/update-manager-core .cache/wallpaper .config/dconf .config/enchant .config/eog .config/evolution .config/gedit .config/gnome-initial-setup-done .config/gnome-session .config/goa-1.0 .config/gtk-3.0 .config/ibus .config/nautilus .config/pulse .config/rclone .config/update-notifier .config/user-dirs.dirs .config/user-dirs.locale ./Desktop ./Documents ./Downloads .gnupg/private-keys-v1.d .gnupg/pubring.kbx .gnupg/trustdb.gpg .local/share .mozilla/extensions .mozilla/firefox .mozilla/systemextensionsdev ./Music ../ec ./Pictures ./Public ./snap ./Templates ./Videos

$ echo …
Run Code Online (Sandbox Code Playgroud)

echo wildcards dot-files

0
推荐指数
1
解决办法
83
查看次数

有动态链接库的rpath吗?

因此,我正在从事的项目使用非系统目录来保存代码使用的一些 DLL。我不想将它们放在系统目录中,因此可执行文件设置了一个 rpath 来查找 DLL。然而,随着越来越多的库被添加,现在有 DLL 依赖于该目录中的其他 DLL。

这些库无法找到它们所依赖的 DLL,因为它们不位于链接器正在查找的目录中,例如系统目录。

有没有办法让 DLL 搜索这个特定的非系统目录?比如rpath?图书馆是如何做到这一点的?该项目使用的构建系统是 CMake(如果这有助于回答)。

这个答案不起作用,因为库中没有 rPath 标签: https: //unix.stackexchange.com/a/272286/4193

我考虑过使用LD_LIBRARY_PATH, 这很有效,但打字很烦人,而且让其他人使用该应用程序也不是那么好。如果有办法将rPath标签添加到库中,那将是最好的选择。

感谢指向以前的相关问题和答案。

libraries dynamic-linking shared-library

0
推荐指数
1
解决办法
6196
查看次数

数字的绝对值

我有一行由空格分隔的数字。

read var
sum=0
for x in $var; do ...
    #add numbers together
    $((sum += x))
done 
Run Code Online (Sandbox Code Playgroud)

我需要打印的值是一个绝对数字

我还有一个问题。我试图获得绝对数字的格式。我正在做的任何事情都不起作用。我读到了

abs(){ 
    number
} 
Run Code Online (Sandbox Code Playgroud)

应该给我这个,但它似乎不起作用。此外,如果这确实有效,您将在哪里进行循环?

linux ubuntu shell-script

0
推荐指数
1
解决办法
3792
查看次数

如何使用awk跳过每三行

有人可以帮我整理文件吗?我想根据下面的示例使用 awk 跳过每三行。

当前文件:

a
a
a
a
b
b
b
b
c
c
c
c
Run Code Online (Sandbox Code Playgroud)

期望的输出:

a
b
c
Run Code Online (Sandbox Code Playgroud)

awk

0
推荐指数
2
解决办法
139
查看次数

从文件中删除前九个字符和最后两个字符

我需要把它hello123456789变成567usingsed来删除前九个字符和最后两个字符。

我一直在寻找一个命令,只是找不到一个我尝试了几种语言来执行一个函数来执行它但没有运气。

sed

0
推荐指数
2
解决办法
63
查看次数

安装没有 sudoer 的包

我运行了命令apt-get install squid并收到以下消息:

E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
Run Code Online (Sandbox Code Playgroud)

看起来我需要成为 root 才能安装软件包。有没有办法做到这一点sudo

ubuntu sudo

0
推荐指数
1
解决办法
32
查看次数

初学者脚本帮助

我正在为一个类制作一个脚本,该脚本应该要求您输入两个整数,然后要求您选择 a / s / m / d 进行加、减、乘或除。它还将确保您输入了一个整数和一个有效的选项,但我稍后会处理这个问题。现在这是我所拥有的:

#!/bin/bash
echo "Please input a whole number"
read num1
echo "Please input another whole number"
read num2
echo "Please input funtion: [a] for addition, [s] for subtraction, [m] for multiply, or [d] for divide"
read func

if [ "$func" -eq "a" ]; then
       echo $((num1 + num2))
fi 

if [ "$func" -eq "s" ]; then
       echo $((num1 - num2))
fi 

if [ "$func" -eq "m" ]; then
       echo $((num1 * num2)) …
Run Code Online (Sandbox Code Playgroud)

shell-script

0
推荐指数
1
解决办法
92
查看次数

如果第一个字段值大于 400,则删除每个文本文件中的行

我有大量的txt文件。每个txt文件的格式与此类似

200 0.2 0.1 0.5 0.4
500 0.4 0.9 0.9 0.1
Run Code Online (Sandbox Code Playgroud)

我试图删除每个 txt 文件中第一个字段值大于 400 的每一行。因此上面的文件现在应该只包含以下内容:

200 0.2 0.1 0.5 0.4
Run Code Online (Sandbox Code Playgroud)

代码

for file in *.txt; do 
        echo "$(awk '{ if ($1 < 401) print }' *.txt)" > tmp && mv tmp *.txt 
done 
rm -f tmp 
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为它将所有文件移动到下一个文本文件。

linux sed awk

0
推荐指数
1
解决办法
111
查看次数