小编wja*_*rea的帖子

我想从 $TEXT 打印出前两个字符

我希望我的程序打印出我输入的文本,然后是该文本的前两个字符。有没有办法做到这一点?

#!/bin/bash
#
# Get text from user repeatedly
#
echo "Type away..."
while read TEXT
do
    echo You typed $TEXT
    if [ "$TEXT" = "quit" ] || [ "$TEXT" = "q" ] || [ "$TEXT" = "Q" ] || [ "$TEXT" = "QUIT" ]; then
        echo So I quit!
        exit 0
    fi
done

echo "HELP!"
Run Code Online (Sandbox Code Playgroud)

bash shell-script variable

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

命令在 shell 脚本中无法正常工作

这是输出:

sudo iwlist scan 2>/dev/null | grep ESSID | sed 's/.*ESSID:"\(.*\)".*/\1/' 2>/dev/null 
Run Code Online (Sandbox Code Playgroud)
亚什沙
核心片段
CoreFragment_5G
核心片段
链接
亚什沙
康快
应用鸟_科技
共生
20096641
CoreFragment_5G
AMBER_AP1
红翼实验室_5G

虽然在脚本中编写的相同内容不一样。

这是我使用上述命令的片段。

for ssid_name in $(sudo iwlist scan 2>/dev/null | grep ESSID | sed 's/.*ESSID:"\(.*\)".*/\1/' 2>/dev/null)
do
    echo "$ssid_name"
done
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出:

亚什
沙阿
核心片段
CoreFragment_5G
核心片段
亚什
沙阿
红翼
实验室
康快
应用鸟_科技
共生
CoreFragment_5G
红翼
LABS_5G

注意:当输出中有空格时,它将作为一个新行。

我正在使用 Ubuntu 18.04。

shell-script

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

Bash 数字排序在同时选择列和一起选择列时给出不同的结果

对于以下示例数据,两列都是数字,但第二列的位数不同。

2 9
1 1000
1 50
3 0
Run Code Online (Sandbox Code Playgroud)

我想根据两列进行排序。用数字标志分别指定它们-n,产生我想要的结果。

sort -n -k1,1 -k2,2 num.data.txt
Run Code Online (Sandbox Code Playgroud)

1 50
1 1000
2 9
3 0
Run Code Online (Sandbox Code Playgroud)

这就是我想要的。

然而,

sort -n -k1,2 num.data.txt
Run Code Online (Sandbox Code Playgroud)

给出似乎按字母顺序排序的数据:

1 1000
1 50
2 9
3 0
Run Code Online (Sandbox Code Playgroud)

我知道这sort -n -k1,2 num.data.txtsort -n num.data.txt只有两列时(给出相同结果)相同,但我实际使用的数据有更多列。

为什么这两种方法之间存在这种差异?

sort numeric-data

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

如果文件名包含括号,则查找失败

我正在尝试在循环中使用 find 来创建一个变量,该变量包含一个与文件名 + 所需字符串匹配的文件

例子:

file1.en.srt
file1.mkv
file1.pt.srt
Run Code Online (Sandbox Code Playgroud)

这是代码的相关部分:

shopt -s nullglob
shopt -s nocaseglob

if [ -d "$1" ]; then
    for file in "${1%/}/"*mkv; do
        # Get filename to match against subs and audios
        filename="$(basename "$file" .mkv)"

        # Find matching subtitle file
        engsubs="$(find . -name "$filename*en.srt*" | sed -e 's,^\./,,')"   

        # Find matching audio file
        engaudio="$(find . -iname "$filename*en.ac3" -o -iname "$filename*en.eac3" -o -iname "$filename*en.dts" | sed -e 's,^\./,,')" 
    done
fi
Run Code Online (Sandbox Code Playgroud)

如果文件不包含括号,它会起作用,但find命令找不到名称包含括号的文件的任何内容。为什么会发生这种情况?我想创建一个像$en这样包含的变量file1.en.srt

bash find shell-script filenames

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

使用空格分隔符将数组类型变量转换为字符串类型

如果我有一个像

arr[0]=2019-06-26
arr[1]=15:21:54
Run Code Online (Sandbox Code Playgroud)

我怎样才能把它转换成一个字符串,其值为

'2019-06-26 15:21:54'
Run Code Online (Sandbox Code Playgroud)

bash array string

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

标签 统计

bash ×3

shell-script ×3

array ×1

filenames ×1

find ×1

numeric-data ×1

sort ×1

string ×1

variable ×1