После псевдонима скрипт не получил переменную

Пробую alias mytest='/usr/bin/python3.6'.

И он может работать, когда я набираю mytest в терминале, я могу использовать python3.6 вручную.

Однако, когда я пытался запустить скрипт, возникали некоторые ошибки импорта.

Мой сценарий такой: mytest test.py $1 $2 Запустите bash test.sh / home / data1 / home / data2 Команда как это изображение

Можете ли вы опубликовать фактическую строку псевдонима, с которой у вас возникла проблема?

Stephan 04.06.2018 18:12

Кстати, не имеет прямого отношения к вашей проблеме, но mytest test.py $1 $2 обычно содержит ошибки - если ваши значения $1 и $2 содержат пробелы, их можно разбить на несколько аргументов; если они не содержат символов, отсутствующих в IFS, их можно просто игнорировать; и т.д. Намного лучше использовать "$1" "$2", если вы действительно хотите передать именно эти две строки, или "$@", если вы хотите передать весь список аргументов.

Charles Duffy 04.06.2018 18:24

Однако большая проблема - псевдонимы по умолчанию вообще не поддерживаются в скриптах. Это интерактивное средство - совместимые с POSIX оболочки без расширений для интерактивного использования даже не обязаны их поддерживать.

Charles Duffy 04.06.2018 18:25

Если вы использовали экспортированную функцию - mytest() { /usr/bin/python3.6 "$@"; }; export -f mytest - что будет поддерживаться в скриптах с bash shebang (/bin/sh не гарантирует соблюдение экспортированных функций, поскольку они являются расширением bash), хотя лучше использовать реальный скрипт под названием mytest в местоположении в PATH.

Charles Duffy 04.06.2018 18:26

Я добавил свою ситуацию с моим сервером. Большое спасибо

Achaca 04.06.2018 19:25

По возможности размещайте контент в виде текста, а не графических снимков экрана. См. meta.stackoverflow.com/a/285557/14122

Charles Duffy 04.06.2018 19:27

@Achaca, также, запуск sh yourscript означает, что он работает с sh, а не с bash, даже если shebang в верхней части скрипта - это #!/bin/bash. Как я сказал выше, вам нужно использовать bash для выполнения экспортируемых функций (и, ну, вам нужно фактически определить экспортируемую функцию, а не псевдоним).

Charles Duffy 04.06.2018 19:28

хорошо понял, большое спасибо

Achaca 04.06.2018 20:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
27
0

Другие вопросы по теме