Команда source their-script
указывает вашей оболочке выполнить their-script
непосредственно в контексте вашего сценария. Это означает, что он имеет доступ ко всем вашим переменным и даже может их изменять.
Если вы удалите слово source
и просто запустите their-script
в качестве команды, он не сможет повлиять ни на один из ваших кодов и его $ 1
будет первым аргументом, который вы дадите ему, поэтому в этом примере его $ 1
примет значение банан
:
their-script banana
Как поясняется вman sort
:
-n, --numeric-sort
compare according to string numerical value
Так ты хочешь:
$ sort -nk1,1 file
1,2,3
2,1,1
10,2,1
Также обратите внимание, что по умолчанию поля разделены пробелами, поэтому эти строки в этом файле содержат только одно поле. Например, первое поле первой строки — 1,2,3
, а не 1
. Вам нужно будет добавить -t,
для ,-separated
полей:
sort -t, -nk1,1 file
С -n
sort
учитывает только последовательность символов, которая образует допустимое число в начале ключа сортировки (, игнорируя начальные пробелы ). Для этой первой строки без -t,
, в зависимости от реализации sort
и локали, 1,2,3
будет рассматриваться либо как 1
, либо как 1.2
(, когда десятичный разделитель пользователя —,
)или 123
(. когда пользовательским разделителем тысяч является ,
и sort
игнорирует любое его появление ).
Если оставить это для всех, кто наткнется на это :sort -V -k1,1 file.txt
, должно сработать.