Tôi có thể diễn đạt nhu cầu của mình với kịch bản sau: Viết hàm chấp nhận một chuỗi được chạy dưới dạng lệnh gốc.
Nó không quá xa vời với một ý tưởng: nếu bạn đang can thiệp vào các tiện ích dòng lệnh khác từ nơi khác trong công ty cung cấp cho bạn một lệnh để chạy nguyên văn. Vì bạn không kiểm soát lệnh, bạn cần chấp nhận bất kỳ lệnh hợp lệ nào làm đầu vào . Đây là những trục trặc chính mà tôi không thể vượt qua:
Lệnh có thể thực thi một chương trình sống trong một đường dẫn có khoảng trắng trong đó:
$command = '"C:\Program Files\TheProg\Runit.exe" Hello';
Lệnh có thể có các tham số có khoảng trắng trong chúng:
$command = 'echo "hello world!"';
Lệnh có thể có cả dấu tick đơn và kép:
$command = "echo `"it`'s`"";
Có cách nào sạch sẽ để thực hiện điều này? Tôi chỉ có thể nghĩ ra những cách giải quyết xa hoa và xấu xí, nhưng đối với một ngôn ngữ kịch bản, tôi cảm thấy việc này thật đơn giản.