Использование команды test с $ _1/

Я просмотрел много тем по этой проблеме и, наконец, решил проблему, проблема заключалась в размере пакетов MTU моей беспроводной карты. Я уменьшил его до 1200 (предыдущий размер был 1500 )с sudo ifconfig wlp2s0 mtu 1200команда (wlp2s0 — моя беспроводная карта )и проблема решена

0
07.07.2020, 17:28
2 ответа

$_1 означает "расширить переменную _1". Поскольку эта переменная не была установлена, она ничего не расширит. Вероятно, кто-то ошибся.

Возможно, человек подумал, что $_1будет таким же, как ${_}1, т. е. расширением $_, (, которое является последним аргументом предыдущей команды ), объединенным с номер 1. Но это не то же самое, как видно ниже:

$ cat tst.bash
#!/bin/bash
test "$1" = "0" && exit
echo $_
test "$1" = "0" && exit
echo $_1
test "$1" = "0" && exit
echo ${_}1
$./tst.bash
0

01

Если в качестве аргумента скрипта (в приведенном выше примере указать что-либо, кроме числа 0, я вообще не предоставил аргумента ), тогда testзавершается ошибкой и exitне запускается. Итак, для каждого echoпоследней выполненной командой будет

test "$1" = "0"

, последним аргументом которого является 0. Таким образом, $_заменяется на 0, ${_}1заменяется на 01, а $_1заменяется на пустую строку.

3
18.03.2021, 23:21

Спасибо, ребята. Я думаю, что человек, который написал, вероятно, ошибся. Предложение состояло в том, чтобы проверить, есть ли файл, и если нет, создать файл. Итак, после некоторых попыток я использовал test -f $(pwd)”/samplefile” || touch samplefile, и это работает. Я просто запутался, потому что все команды для меня новые, и я подумал, что, возможно, $_1/может что-то означать. Большое спасибо!:-)

0
18.03.2021, 23:21

Теги

Похожие вопросы