@ivankirshin

Как запустить bash скрипт на Mac?

Возникла проблема с запуском скрипта на mac os. На Виндовс и Линукс он работал.
А тут ошибка с утилитой xargs, которая находится в самом конце скрипта, как я понял, на маке используются какие-то другие ключи?
Неделю назад начал им пользоваться, никак не думал, что тут это отличается от линукса.
Если что я не очень понимаю, данный скрипт. Моя задача как раз в нем разобраться.
Можно ли заставить его работать в этой ОС, ничего в нем не меняя?5a5cef602f473274419589.png
#!/bin/bash

USAGE="Usage: $0 [-f name] [-n] [dir]"

while [ $# -gt 0 ]; do
	case $1 in
		-n)
			SEARCH_DEPTH="-maxdepth 1"
			shift
			;;
		-f)
			if [ -z "$2" ]; then
				echo "$0: -f without argument"
				echo "$USAGE"
				exit 2
			fi
			EXPECTED_SCRIPT_TYPE="$2"
			shift 2
			;;
		*)
			if [ -z "$TARGET_DIR" ]; then
				if [ ! -d "$1" ] || [ ! -r "$1" ] || [ ! -x "$1" ]; then
					echo "$0: $1 is not a directory or there are no permissions"
					exit 3
				fi

				TARGET_DIR="$1"
				shift
			else
				echo "$0: Unknown argument: $1"
				echo "$USAGE"
				exit 1
			fi
			;;
	esac
done

function resolve_script() {
	SHEBANG=$(head -1 "$0" 2>/dev/null)

	if [[ $SHEBANG =~ ^#! ]]; then
		SHEBANG=${SHEBANG:2}
		SCRIPT_TYPE=$(basename "${SHEBANG%%[[:blank:]]*}")
		if [ x"$SCRIPT_TYPE" = x"env" ]; then
			# Clever case - someone is using 'env' in shebang to get the correct interpreter
			# First arg to env will be the /true/ interpreter
			SCRIPT_TYPE=${SHEBANG#*[[:blank:]]}
			SCRIPT_TYPE=${SCRIPT_TYPE%%[[:blank:]]*}

			# Or, if there is no args, someone is really using env as an interpreter...
			if [ -z SCRIPT_TYPE ]; then
				SCRIPT_TYPE="env"
			fi
		fi

		if [ ! -z "$EXPECTED_SCRIPT_TYPE" ] && [ x"$EXPECTED_SCRIPT_TYPE" != x"$SCRIPT_TYPE" ]; then
			return
		fi

		echo $(realpath $0) "$SCRIPT_TYPE"
	fi
}
export EXPECTED_SCRIPT_TYPE
export -f resolve_script

find "${TARGET_DIR:-.}" $SEARCH_DEPTH -type f -printf '%P\0' | xargs -0 -n 1 -r bash -c 'resolve_script "$@"'
  • Вопрос задан
  • 3698 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AVKor
Альтернатива, чтобы не переписывать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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